home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / p4 / p4-1_2a.lha / p4-1.2a / README < prev   
Text File  |  1992-10-19  |  10KB  |  223 lines

  1.  
  2.  
  3.               The P4 Parallel Processing Library
  4.  
  5. p4 is a package of procedures that support development of parallel programs
  6. that are portable across a wide variety of architectures.  For the
  7. shared-memory model of parallel computation, p4 provides a set of primitives
  8. from which monitors can be constructed, as well as a set of useful monitors.
  9. For the distributed-memory model, p4 provides typed send and receive
  10. operations, and creation of processes according to a text file describing
  11. files to be executed by created processes and the machines to execute them
  12. on.  These two models can be combined to form the "cluster" model.
  13.  
  14. Authorship:  This system owes much to many people (see History, below) but the
  15. current version was written by Ralph Butler of the University of North Florida
  16. and Argonne National Laboratory, and Rusty Lusk at Argonne National Laboratory.
  17.  
  18. History: The system is directly decended from the "Argonne macros", or
  19. "monmacs", or "parmacs", the system built at Argonne by Rusty Lusk and Ross
  20. Overbeek using m4 macros, and documented in the book "Portable Programs for
  21. Parallel Processors", by Boyle, Butler, Disz, Glickfeld, Lusk, Overbeek,
  22. Patterson, and Stevens, all of whom contributed to that version of the system.
  23. Major contributions were also made by Bob Olson, now at the University of
  24. Illinois, and Remy Evard, now at the University of Oregon.  The book is
  25. published by Holt, Rinehart, and Winston (ISBN 0-03-014404-3).  p4 does not
  26. change any of the basic concepts presented there, but is a completely new
  27. implementation.  Major differences are:
  28.  
  29.   The m4 macro processor is not part of the system; it is now constructed 
  30.     entirely with C macros and functions.
  31.   Processes on various machines are specified in a text file that is read at
  32.     run time, rather than in macros that are compiled into the executable
  33.     file.
  34.   More machines are supported, notably the BBN Butterflies, the Intel
  35.     IPSC/860, and the IBM RS/6000.
  36.   Machine dependent code has been isolated in two files, making the system
  37.     easier to port.
  38.  
  39.  
  40. The files and subdirectories in this directory are:
  41.  
  42.   README     - this file
  43.   alog       - the logging package for debugging/analyzing p4 pgms
  44.   disclaimer - the "no warranty" statement
  45.   doc         - a draft user manual, man page, and other documentation
  46.   lib         - the p4 system C source code
  47.   lib_f         - Fortran interface routines
  48.   makefile   - the top-level makefile for installing p4
  49.   messages   - distributed-memory examples
  50.   messages_f - distributed-memory examples in Fortran
  51.   monitors   - shared-memory examples
  52.   contrib    - miscellaneous other examples
  53.   contrib_f  - miscellaneous fortran examples
  54.   util         - installation files, especially defs.all and makefile.proto
  55.   bin         - a few shell scripts and executable version of server daemon(s)
  56.  
  57. See the manual in the doc subdirectory for full details on how to install
  58. and use p4.  Following is a brief description of how to do the
  59. installation.
  60.  
  61.  
  62. To build p4, position yourself in this directory and type:
  63.  
  64.    make all MACHINE=<machine>
  65.  
  66. where <machine> is one of the machine names listed in util/machines.
  67.  
  68. For example:
  69.  
  70.   make all MACHINE=SYMMETRY
  71.  
  72.  
  73. The 'all' is optional, for example
  74.  
  75.   make MACHINE=IPSC860_HOST
  76.  
  77.  
  78. To save disk space, various intermediate files can be removed with
  79.  
  80.   make clean
  81.  
  82.  
  83. The system can be restored to its original, machine-independent state with
  84.  
  85.   make realclean
  86.  
  87. Note that this removes the machine-dependent Makefiles in each directory, so
  88. the operation is not idempotent.
  89.  
  90. It is also possible to install (or clean) only some of the directories:
  91.  
  92.   make all MACHINE=SUN DIRS=messages
  93.  
  94.   make clean DIRS='monitors messages'
  95.  
  96.  
  97. To install only the Makefiles in all subdirectories, use:
  98.  
  99.   make makefiles MACHINE=<machine>
  100.  
  101. You can have p4 build a makefile in your own directory by copying one of
  102. the makefile.proto files from an example directory (e.g. messages or
  103. monitors).  Then edit the proto file to include information about your
  104. own programs and the location of the p4 library (LIBDIR).
  105. Finally, you build the Makefile by getting into the 
  106. top-level p4 directory and typing:
  107.  
  108.     make makefiles MACHINE=<machine> DIRS=<your_full_pathname>
  109.  
  110. To add a new machine, or to change the characteristic parameters associated
  111. with an existing one, edit the file util/defs.all
  112.  
  113. To add a new example program in one of the application directories, edit the
  114. file makefile.proto in the appropriate directory.
  115.  
  116. p4 currently traps the signals SIGINT and SIGUSR1.  The SIGINT interrupt is
  117. trapped in order to do some cleanup especially on System V machines where
  118. IPC facilities must be returned to the OS.  If the user decides to trap
  119. this interrupt for his own cleanup, he should invoke p4_error as part of
  120. any termination processing.  p4 uses the SIGUSR1 interrupt internally by a
  121. listener process for socket communications.  The only time in which p4
  122. would not need this interrupt would be in those instances in which no
  123. socket communications are to be performed.
  124.  
  125.  
  126.  
  127. /******************  OLD STUFF  *****************************************/
  128.  
  129.  
  130. Status of version 0.2 (2/1/1992):
  131.   
  132.   As in version 0.1 (see below), processes on the Butterfly may not be 
  133.     created in the cluster you are expecting.  In particular, processes
  134.     which are started via remote shell from another machine may start in the
  135.     public cluster.  We will explore this further as time permits.
  136.   
  137.   Also on the butterfly, we have implemented quite a bit of code for the 
  138.     TCMP package planned for that machine, but do not yet have it stable.
  139.  
  140.   Shared memory operations in Fortran are not supported on the Sequents.
  141.     This implies that you cannot have a procgroup file entry such as 
  142.     "local 2" for a Fortran program on the Sequent, because such an entry
  143.     would imply that messages would be passed thru shared memory.
  144.  
  145.   We do not currently support System V IPC on any machine although we are
  146.     exploring it.  The major reason that we have not supported it is that
  147.     in some instances the operating system may not reclaim IPC resources if a
  148.     program abnormally terminates, and the user must explicitly do it.  We 
  149.     are planning to make p4 handle such cases when possible.
  150.   
  151.   The alog/upshot packages are available as graphical debugging tools.  In
  152.     the near future, we hope to instrument the internals of p4 with logging
  153.     calls for these packages.
  154.   
  155.   The new machine type IBM_3090_AIX does not support Fortran at this point.
  156.     We have encountered one or two "standard" Fortran functions such as getarg
  157.     that are not available on the machine which are using.  We will explore
  158.     this problem more as time permits.
  159.  
  160.   The Fortran on the NeXT has the same problem as the IBM_3090_AIX.
  161.  
  162.   The Fortran on the Titan is not yet working correctly.
  163.  
  164.   If your machine is running an old socket implementation (e.g. 4.2),
  165.     then you may experience very slow communications via sockets.
  166.     Also, in the current release, we are only using the socket option
  167.     TCP_NODELAY on BSD systems to boost performance.  We have found
  168.     that the setsockopt call is not available on some SYSV machines 
  169.     that we have ported to; we plan to fix this for those SYSV
  170.     environments that do support it in the future.  If you wish to 
  171.     turn that option on, the relevant code is protected by ifdef P4BSD
  172.     lines in p4_sock_util.h and can easily be changed.
  173.   
  174.   On an SGI machine, the make facility will only work correctly if you
  175.     set your environment variable SHELL to the Bourne shell, since our 
  176.     makefiles contain Bourne shell code at this point.
  177.  
  178.  
  179.  
  180. Status of version 0.1 (2/1/1991):
  181.  
  182.   The C version is stable.  No significant changes are planned.
  183.  
  184.   The examples all work, but could stand some cleaning up.  Subsequent
  185.     releases may have different examples.  The grid example in the messages
  186.     directory has a compile-time configuration of 4 processes.
  187.  
  188.   The p4_logging routines have not been tested.  They are in the process of
  189.     being replaced by the atrace package.
  190.  
  191.   The Fortran version is included, but it is not guaranteed to compile and
  192.     link on any of the given machines without local modifications.  It is
  193.     really a place-holder for a new version to come real soon now, which may
  194.     have different procedure names and parameters but the same idea.
  195.  
  196.   The tutorial is in very rough draft form.  It is expected to be extended in
  197.     subsequent releases.
  198.  
  199.   It is not possible to create node processes on the IPSC860 from machines
  200.     other than the IPSC host machine, nor is it possible to create node
  201.     processes excuting different files.  The only model that works on this
  202.     machine has a master on the srm and the same executable file loaded on all
  203.     the nodes.  We hope to change this restriction soon.
  204.  
  205.   The clock on the ATT_3B2 is coarse-grained.
  206.  
  207.   The socket-pair system routine on the 3B2 has a bug in it which causes an
  208.     error message to be reported at the end of a run.  It should not effect
  209.     the job as it is running.
  210.  
  211.   The Butterflies are treated as shared-memory machines, with primitive memory
  212.     management.  The next release should have BBN native memory management 
  213.     with support for interleaved memory, and an optimized message-passing
  214.     system written by Ken Sedgewick.
  215.  
  216.   On the butterfly be alert to the fact that processes may not be created in
  217.     the cluster you were expecting.  Automatic cluster management is being
  218.     explored.
  219.  
  220.   On the IPSC860, mixing p4 message passing with Intel message passing, even
  221.     the system messages that are associated with global data operations, may
  222.     lead to unexpected (and bad) results.  We are working on this now.
  223.